using System;
using System.Threading;
using Beetle;

internal class ao : am
{
	public int g;

	public override void a()
	{
		if (y.c && f.get_Socket() != null)
		{
			try
			{
				Interlocked.Decrement(ref f.g);
				f.af.a.SetInfo(e.Buffer, 0, g);
				f.a(f.af);
			}
			catch (Exception exception)
			{
				f.InvokeChannelError(new ChannelErrorEventArgs
				{
					Channel = f,
					Exception = exception
				});
			}
		}
	}

	public override void Dispose()
	{
		e.f();
		f = null;
		e = null;
	}
}
